100 CLS :RETURN :REM This is screen clear subroutine. If program bombs on this line, see MORTCOST.DOC to correct this line for your computer.
110 GOSUB 100
120 PRINT "M O R T C O S T version 3.0":DIM LO(SIZE)
130 PRINT " . . . a mortgage cost analysis tool."
140 PRINT
150 PRINT "Gives you a fighting chance against the banks. Shows you the total cost of
160 PRINT "different mortage plans, including the effects of taxes and inflation. Helps
170 PRINT "you decide if you should refinance. It also can handle flexible mortgages."
180 PRINT
190 PRINT "MORTCOST is user supported software. If you find this program useful, please":DIM PO(SIZE)
200 PRINT "contribute to help offset our programming and distribution costs. We simply"
210 PRINT "cannot keep the program current with tax law changes and add new features":DIM TEMP(SIZE)
220 PRINT "without this help. As an incentive, payment of $10 or more entitles you to
230 PRINT "registration benefits. Read MORTCOST.DOC for further details, restrictions on"
240 PRINT "commercial use, and instructions to make the best use of this program. If you"
250 PRINT "find that MORTCOST isn't helpful, please pass it on to a friend."
260 PRINT
270 PRINT "Send payment to: Joann and Terry Quinn
280 PRINT " 700 Fairoaks Road, RR #4
290 PRINT " Metamora, IL 61548
300 PRINT
310 PRINT "Copyright 1986 by Joann and Terry Quinn
320 PRINT "(Hit the letter 'G' to start the program).
330 A$=INKEY$:IF A$="G" OR A$="g" THEN 340:ELSE 330
340 FOR IS=1 TO 6:PRINT:NEXT IS
350 B=0
360 DIM TA(SIZE),DI(SIZE),IN(SIZE),PR(SIZE),ZP(SIZE),PA(SIZE),P2(SIZE),Z4(SIZE)
370 DIM CY(SIZE),IL(SIZE),X1(SIZE),X2(SIZE),X3(SIZE),X4(SIZE),ZL(SIZE),ZT(SIZE),TX(SIZE),PP(SIZE),CO(SIZE)
390 PRINT
400 INPUT "ENTER AMORTIZATION PERIOD (LENGTH) OF LOAN IN YEARS"; KYEARS
410 IF INT(KYEARS)<>KYEARS OR KYEARS<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER . . . RETRY":GOTO 400
420 IF KYEARS > SIZE THEN PRINT "MAXIMUM ENTRY ="SIZE" RE-ENTER":GOTO 400
430 KXYEARS = KYEARS + 1
440 IF B<>0 THEN 2220
480 PRINT
490 INPUT "ENTER AMOUNT OF LOAN (PRINCIPAL) $",PR(0)
500 IF B<>0 THEN 2220
510 GOSUB 100
530 FOR J = 0 TO SIZE
540 LO(J) = 1E+06
550 NEXT J
560 PRINT "ENTER LOAN INTEREST RATE FOR FIRST YEAR"
570 INPUT "(For example, 11.5% would be entered as 11.5) Enter here--> ",LO(1)
580 PRINT
590 PRINT
600 PRINT "IF INTEREST RATE CHANGES DURING LOAN PERIOD, ENTER THE YEAR THAT THE NEW RATE"
610 PRINT "STARTS AT AND THE NEW RATE. NOTE: FIRST YEAR OF LOAN IS YEAR 1."
620 PRINT "To skip to next input, type S for YEAR"
630 PRINT
640 INPUT "YEAR--> ", K$
650 IF K$ = CHR$(83) OR K$ = CHR$(115) THEN 720
660 K=VAL(K$)
670 IF INT(K)<>K OR K<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER, TRY AGAIN":GOTO 640
680 IF K>SIZE THEN PRINT "MAXIMUM ENTRY ="SIZE" RE-ENTER":GOTO 640
690 INPUT "INTEREST RATE--> ", LO(K)
700 GOTO 640
710 PRINT
720 J=2
730 IF LO(J) = 1E+06 THEN LO(J) = LO (J-1)
740 IF J = SIZE THEN 770
750 J = J+1
760 GOTO 730
770 IF B<>0 THEN 2220
780 GOSUB 100
800 FOR J=0 TO SIZE
810 TA(J)=1E+06
820 NEXT J
830 PRINT "ENTER YOUR CURRENT INCOME TAX BRACKET %-age (example: 25% --> 25 )"
840 INPUT "Enter S to skip if you do not want tax calculations--> ",K$
850 IF K$=CHR$(83) OR K$=CHR$(115) THEN TA(1)=0:GOTO 1000
860 TA(1)=VAL(K$)
870 IF TA(1)<1 AND TA(1)<>0 THEN PRINT:PRINT "RE-ENTER AS NON-DECIMAL":GOTO 830
880 PRINT "
890 PRINT "IF YOU THINK YOUR TAX BRACKET WILL CHANGE IN THE FUTURE, ENTER"
900 PRINT "THE YEAR AND NEW BRACKET. Enter S for YEAR when finished."
910 PRINT "
920 INPUT "YEAR--> ", K$
930 IF K$ = CHR$(83) OR K$ = CHR$(115) THEN 1000
940 K=VAL(K$)
950 IF INT(K)<>K OR K<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER, TRY AGAIN":GOTO 920
960 IF K>SIZE THEN PRINT "MAXIMUM VALUE = "SIZE "RE-ENTER":GOTO 920
970 INPUT "TAX BRACKET--> ",TA(K)
980 IF TA(K)<1 AND TA(K)<>0 THEN PRINT "RE-ENTER AS NON-DECIMAL":GOTO 970
990 GOTO 920
1000 PRINT
1010 J=2
1020 IF TA(J)=1E+06 THEN TA(J) = TA(J-1)
1030 IF J =SIZE THEN 1060
1040 J=J+1
1050 GOTO 1020
1060 IF B<>0 THEN 2220
1070 GOSUB 100
1090 FOR J=0 TO SIZE
1100 PO(J)=0
1110 NEXT J
1120 PRINT "THIS INPUT IS FOR LOAN POINTS THAT CAN BE DEDUCTED FOR YEAR THEY ARE PAID"
1130 PRINT "Typically this would be for a new purchase or home improvement"
1140 PRINT
1150 PRINT "ENTER YEAR NO. & THE INTEREST 'POINTS' FOR THAT YEAR."
1160 PRINT " EXAMPLE: 2.5% (2.5 'POINTS') IS ENTERED AS 2.5"
1170 PRINT
1180 PRINT "Enter S for year to skip this section or when finished entering data."
1190 PRINT
1200 INPUT "YEAR--> ", K$
1210 IF K$ = CHR$(83) OR K$ = CHR$(115) THEN 1270
1220 K=VAL(K$)
1230 IF INT(K)<>K OR K<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER, TRY AGAIN":GOTO 1200
1240 IF K>SIZE THEN PRINT "MAXIMUM VALUE = "SIZE "RE-ENTER":GOTO 1200
1250 INPUT "POINTS--> ",PO(K)
1260 GOTO 1200
1270 IF B<>0 THEN 2220
1280 GOSUB 100
1300 FOR J=0 TO SIZE
1310 P2(J)=0
1320 NEXT J
1330 PRINT "THIS INPUT IS FOR POINTS THAT MUST BE DEDUCTED OVER THE LENGTH OF THE LOAN"
1340 PRINT "Included would be points associated with refinancing an existing loan"
1350 PRINT
1360 PRINT "ENTER YEAR NO. & THE INTEREST 'POINTS' FOR YEAR THEY ARE PAID."
1370 PRINT " EXAMPLE: 2.5% (2.5 'POINTS') IS ENTERED AS 2.5"
1380 PRINT
1390 PRINT "Enter S for year to skip this section or when finished entering data."
1400 PRINT
1410 INPUT "YEAR--> ", K$
1420 IF K$ = CHR$(83) OR K$ = CHR$(115) THEN 1480
1430 K=VAL(K$)
1440 IF INT(K)<>K OR K<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER, TRY AGAIN":GOTO 1410
1450 IF K>SIZE THEN PRINT "MAXIMUM VALUE = "SIZE "RE-ENTER":GOTO 1410
1460 INPUT "POINTS--> ",P2(K)
1470 GOTO 1410
1480 IF B<>0 THEN 2220
1490 GOSUB 100
1510 FOR J=0 TO SIZE
1520 DI(J)=0
1530 NEXT J
1540 PRINT "ENTER YEAR & NON-DEDUCTIBLE EXPENSES (DIRECT COSTS) OF LOAN IN DOLLARS."
1550 PRINT "EXAMPLES: Appraisals, attorneys fees, recording costs, title insurance"
1560 PRINT
1570 PRINT "Enter S for YEAR when finished."
1580 PRINT
1590 INPUT "YEAR--> ", K$
1600 IF K$ = CHR$(83) OR K$ = CHR$(115) THEN 1660
1610 K=VAL(K$)
1620 IF INT(K)<>K OR K<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER, TRY AGAIN":GOTO 1590
1630 IF K>SIZE THEN PRINT "MAXIMUM VALUE = "SIZE "RE-ENTER":GOTO 1590
1640 INPUT "DIRECT LOAN COSTS--> $",DI(K)
1650 GOTO 1590
1660 IF B<>0 THEN 2220
1670 GOSUB 100
1690 FOR J=0 TO SIZE
1700 IN(J) =1E+06
1710 NEXT J
1720 PRINT "ENTER ESTIMATE OF THE CURRENT INFLATION RATE TO CALCULATE"
1730 PRINT "THE COST OF THE LOAN IN TODAY'S DOLLARS. Enter S to skip this feature"
1740 PRINT "(Example: 6% inflation entered as 6)
1750 PRINT "
1760 INPUT "ENTER INFLATION ESTIMATE--> ", K$
1770 IF K$=CHR$(83) OR K$ = CHR$(115) THEN IN(1)=0: GOTO 1910
1780 IN(1)=VAL(K$)
1790 PRINT
1800 PRINT "IF YOU THINK INFLATION WILL CHANGE IN A FUTURE YEAR OR YEARS
1810 PRINT "ENTER THE YEAR AND NEW RATE."
1820 PRINT "Enter S for year when finished."
1830 PRINT
1840 INPUT "YEAR--> ", K$
1850 IF K$ = CHR$(83) OR K$ = CHR$(115) THEN 1910
1860 K=VAL(K$)
1870 IF INT(K)<>K OR K<=0 THEN PRINT "YEAR MUST BE A POSITIVE INTEGER, TRY AGAIN":GOTO 1840
1880 IF K>SIZE THEN PRINT "MAXIMUM VALUE = "SIZE "RE-ENTER":GOTO 1840
1890 INPUT "INFLATION RATE--> ", IN(K)
1900 GOTO 1840
1910 PRINT
1920 PRINT
1930 J=2
1940 IF IN(J)=1E+06 THEN IN(J) = IN(J-1)
1950 IF J=SIZE THEN 1980
1960 J = J+1
1970 GOTO 1940
1980 IF B<>0 THEN 2220
1990 PRINT
2000 PRINT
2010 PRINT "STANDBY"
2030 B1$="###"
2040 B3$=" ##.##"
2050 B5$=" ##.###"
2060 B6$=" ##.## "
2070 B7$="$$###,###.##"
2080 B8$="$$#,###.##"
2090 B9$="$$###,###,###.##"
2100 C3$="$$##,###,###.##"
2110 C4$="$$#,###,###.## "
2120 C6$=" $$###,###,###.## "
2130 C7$="$$#,###,###.##"
2140 D3$=" $$##,###,###.##"
2150 D4$=" $$##,###,###.##"
2160 E1$=" $$##,###,###.##"
2170 F3$="$$##,###,###"
2180 F4$="$$##,###,### "
2190 F5$="##"
2220 ITEST = 0
2230 B=1
2250 GOSUB 100
2260 PRINT "TYPE NUMBER TO DISPLAY CURRENT INPUTS"
2270 PRINT
2280 PRINT "1 AMORTIZATION PERIOD (LENGTH) OF LOAN"
2290 PRINT "2 PRINCIPAL AMOUNT"
2300 PRINT "3 INTEREST RATE"
2310 PRINT "4 TAX BRACKET SCHEDULE"
2320 PRINT "5 LOAN POINTS DEDUCTIBLE IN FIRST YEAR (New Loan)"
2330 PRINT "6 LOAN POINTS TO BE DEDUCTED OVER LENGTH OF LOAN (Refinance)"
2340 PRINT "7 DIRECT COSTS (non-deductible)"
2350 PRINT "8 INFLATION RATE ESTIMATE"
2360 PRINT
2370 PRINT "C TO CHANGE ANY OF THE INPUTS"
2380 PRINT
2390 PRINT "P COMPUTE RESULTS AND SEND OUTPUT TO PRINTER"
2400 PRINT "S COMPUTE RESULTS AND SEND OUTPUT TO SCREEN"
2410 PRINT
2420 PRINT "X EXIT PROGRAM AND RETURN TO OPERATING SYSTEM"
2430 PRINT
2440 PRINT
2450 PRINT "ENTER SELECTION (Your choice)"
2460 PRINT
2470 K$ = INKEY$
2480 IF K$="1" THEN 2750
2490 IF K$="2" THEN 2860
2500 IF K$="3" THEN 2960
2510 IF K$="4" THEN 3070
2520 IF K$="5" THEN 3180
2530 IF K$="6" THEN 3290
2540 IF K$="7" THEN 3400
2550 IF K$="8" THEN 3510
2560 IF K$="P" OR K$="p" THEN 3930
2570 IF K$="S" OR K$="s" THEN ITEST = 1 : GOTO 3930
2580 IF K$="X" OR K$="x" THEN 5780
2590 IF K$="C" OR K$="c" THEN 2610
2600 GOTO 2470
2610 PRINT
2620 PRINT "ENTER NUMBER OF DESIRED INPUT TO CHANGE (1-8)"
2630 PRINT "(Hit escape key to return to menu)"
2640 K$=INKEY$
2650 IF K$="1" THEN 390
2660 IF K$="2" THEN 480
2670 IF K$="3" THEN 510
2680 IF K$="4" THEN 780
2690 IF K$="5" THEN 1070
2700 IF K$="6" THEN 1280
2710 IF K$="7" THEN 1490
2720 IF K$="8" THEN 1670
2730 IF K$=CHR$(27) THEN 2250
2740 GOTO 2640
2750 GOSUB 100
2770 PRINT
2780 PRINT
2790 PRINT "THE CURRENT SETTING OF THE AMORTIZATION PERIOD IS ";KYEARS;" YEARS."
2800 PRINT
2810 PRINT
2820 PRINT
2830 PRINT "HIT ANY KEY TO CONTINUE"
2840 K$=INKEY$:IF LEN(K$)= 0 THEN 2840
2850 GOTO 2250
2860 GOSUB 100
2870 PRINT "LOAN PRINCIPAL AMOUNT EQUALS $";PR(0)
2880 PRINT
2890 PRINT
2900 PRINT
2910 PRINT "HIT ANY KEY TO CONTINUE"
2920 K$=INKEY$: IF LEN(K$)=0 THEN 2920
2930 GOTO 2250
2960 BS=14
2970 F2$="##.### "
2980 GOSUB 100
2990 PRINT "LOAN INTEREST RATE SCHEDULE"
3000 PRINT
3010 FOR I=1 TO SIZE
3020 TEMP(I) = LO(I)
3030 NEXT I
3040 GOSUB 3640
3050 GOTO 2250
3070 F2$="##.# "
3080 GOSUB 100
3090 BS=12
3100 PRINT "TAX BRACKET SCHEDULE"
3110 PRINT
3120 FOR I=1 TO SIZE
3130 TEMP(I) = TA(I)
3140 NEXT I
3150 GOSUB 3640
3160 GOTO 2250
3180 F2$="##.## "
3190 BS=13
3200 GOSUB 100
3210 PRINT "POINTS THAT ARE DEDUCTIBLE IN FIRST YEAR OF LOAN"
3220 PRINT
3230 FOR I=1 TO SIZE
3240 TEMP(I) = PO(I)
3250 NEXT I
3260 GOSUB 3640
3270 GOTO 2250
3290 F2$="##.## "
3300 BS=13
3310 GOSUB 100
3320 PRINT "POINTS THAT MUST BE DEDUCTED OVER LENGTH OF LOAN"
3330 PRINT
3340 FOR I=1 TO SIZE
3350 TEMP(I) = P2(I)
3360 NEXT I
3370 GOSUB 3640
3380 GOTO 2250
3400 F2$="##### "
3410 GOSUB 100
3420 BS=13
3430 PRINT "LOAN DIRECT COSTS"
3440 PRINT
3450 FOR I=1 TO SIZE
3460 TEMP(I) = DI(I)
3470 NEXT I
3480 GOSUB 3640
3490 GOTO 2250
3510 F2$="##.## "
3520 BS=13
3530 GOSUB 100
3540 PRINT "INFLATION RATE SCHEDULE"
3550 PRINT
3560 FOR I=1 TO SIZE
3570 TEMP(I) = IN(I)
3580 NEXT I
3590 GOSUB 3640
3600 GOTO 2250
3610 STOP
3640 PRINT "YEAR VALUE YEAR VALUE YEAR VALUE"
3650 JSUB=1
3660 F1$=" ## "
3670 IF KYEARS <=20 THEN 3700
3680 IF KYEARS <=40 THEN 3750
3690 GOTO 3810
3700 PRINT USING F1$;JSUB;:PRINT USING F2$;TEMP(JSUB)
3710 IF JSUB = KYEARS THEN 3870
3720 IF JSUB = 20 THEN 3870
3730 JSUB=JSUB+1
3740 GOTO 3700
3750 PRINT USING F1$;JSUB;:PRINT USING F2$;TEMP(JSUB);:PRINT USING F1$;JSUB+20;:PRINT USING F2$;TEMP(JSUB+20)
3760 IF JSUB + 20 = KYEARS THEN 3770 ELSE 3780
3770 IF KYEARS = 40 THEN 3870 ELSE JSUB = JSUB + 1:GOTO 3700
3780 IF JSUB + 20 = 40 THEN 3870
3790 JSUB = JSUB + 1
3800 GOTO 3750
3810 PRINT USING F1$;JSUB;:PRINT USING F2$;TEMP(JSUB);: PRINT USING F1$;JSUB + 20;:PRINT USING F2$;TEMP(JSUB+20);: PRINT USING F1$;JSUB + 40;:PRINT USING F2$;TEMP(JSUB + 40)
3820 IF JSUB + 40 = KYEARS THEN 3830 ELSE 3840
3830 IF KYEARS = 60 THEN 3870 ELSE JSUB = JSUB + 1:GOTO 3750
3840 IF JSUB + 40 = INT(SIZE) THEN 3870
3850 JSUB = JSUB + 1
3860 GOTO 3810
3870 PRINT "HIT ANY KEY TO CONTINUE";
3880 K$=INKEY$: IF LEN(K$)=0 THEN 3880
3890 RETURN
3930 PRINT
3940 PRINT
3950 IF ITEST=1 THEN 3990
3960 PRINT "ENTER OPTIONAL TITLE"
3970 LINE INPUT "(44 characters maximum)----------->",A$
3980 IF LEN(A$)>44 THEN PRINT "TOO LONG, RE-ENTER":GOTO 3960
4600 LPRINT USING B1$;K;:LPRINT TAB(8) USING B1$;TA(K);:LPRINT USING B3$;IN(K);:LPRINT USING B5$;LO(K);:LPRINT USING B6$;PO(K);:LPRINT USING B6$;P2(K);:LPRINT USING B7$;ZP(K);:LPRINT USING B8$;DI(K);:LPRINT USING B9$;PA(K)
4960 LPRINT USING F5$;K;:LPRINT USING F3$;CO(K);:LPRINT USING F4$;CY(K);:LPRINT USING F3$;X1(K);:LPRINT USING F4$;X2(K);:LPRINT USING F4$;X3(K);:LPRINT USING F3$;X4(K)
5290 PRINT USING B1$;K;:PRINT TAB(8) USING B1$;TA(K);:PRINT USING B3$;IN(K);:PRINT USING B5$;LO(K);:PRINT USING B6$;PO(K);:PRINT USING B6$;P2(K);:PRINT USING B7$;ZP(K);:PRINT USING B8$;DI(K);:PRINT USING B9$;PA(K)
5650 PRINT USING F5$;K;:PRINT USING F3$;CO(K);:PRINT USING F4$;CY(K);:PRINT USING F3$;X1(K);:PRINT USING F4$;X2(K);:PRINT USING F4$;X3(K);:PRINT USING F3$;X4(K)